The present invention pertains generally to computer programming, and more particularly to tools for assisting application developers in creating software applications.
Customer expectations of software performance and functionality have led to the development of increasingly complex applications. For example, it is not uncommon for applications to consist of millions of lines of code. In addition, modem applications typically include many components that interact with each other and with components outside the application. This increase in the size and complexity of software applications has made the overall amount of information that developers must track and remember increasingly divergent and complex.
Conventional development environments assist developers by identifying and flagging code development errors. Some such development environments are capable of detecting errors as they are input and displaying error messages when they are detected. Even with such capabilities, however, developers often still find it difficult to manage code-specific tasks, as well as related tasks associated with overall application development.
Some development environments attempt to facilitate development by providing developers with task lists that describe tasks that the developer needs to complete. While these tools provide valuable information, their usefulness is generally limited in that the task lists are generated and updated only at specific points in the development process, rather than as the code is input. As a result, the developer does not have ready access to a current list of tasks to be completed. Accordingly, a need continues to exist for a development environment that provides a developer with a current list of development-related tasks.
According to various example implementations of the invention, a task list facilitates code development by assisting developers in keeping track of and managing a variety of tasks, such as errors to be corrected, opportunities for optimization, and other user-defined tasks. As the developer edits source code, warnings and coding errors are detected and inserted as tasks in a task list. The developer can also embed keywords known as comment tokens in the code. These comment tokens are detected and used to define tasks.
In one particular implementation, source code is evaluated during an interactive code development session to determine whether a comment token is present. If a comment token is present, a task is inserted into a task list. If a task is completed, the task list is modified to indicate completion of the task during the interactive code development session.
In specific implementations, tasks can also be contributed by the compiler, by build/deploy services, and by other modules internal or external to the development environment. Additionally, in certain implementations, tasks can be filtered and sorted according to various criteria.
Yet another implementation is directed to a method of displaying a set of tasks associated with a development project and selecting a displayed task in a computer system having a graphical user interface including a display and a user interface selection device. During an interactive code development session, source code is evaluated to determine whether a comment token is present. If so, a task is inserted into a task list. When a task is completed, the task list is modified during the interactive code development session to indicate that the task has been completed. At least part of the task list is then displayed using the display. A selection signal indicative of a user selection of a task from the displayed tasks is received. A portion of the input source code is then displayed that corresponds to the associated location in the source code.
Still another implementation is directed to a computer-readable medium having computer-executable modules stored on it. One such module is a parser module that parses source code while it is being input by a developer to detect the presence of comment tokens. When a comment token is detected, a task module inserts a task into a task list. When a task has been completed, the task module modifies the task list to indicate this fact. A display module displays the task list. Another implementation is directed to a computer arrangement having these modules. In another particular implementation, a token interface module detects changes to the set of comment tokens and generates a notification in response to a change to the set of comment tokens.
The above summary of the present invention is not intended to describe every implementation of the present invention. The figures and the detailed description that follow more particularly exemplify these implementations.